import { apiClient } from '../api';
import { AddTrackParams, DeleteTrackParams, TrackType } from './types';

/**
 * 为某个草稿添加一个轨道
 * @param params 添加轨道的参数
 * @returns Promise<AddTrackResponse>
 */
export function addTrack(params: AddTrackParams): Promise<any> {
    // 验证必需参数
    if (!params.draft_id) {
        throw new Error('缺少draft_id参数，请提供草稿ID');
    }

    if (!params.track_type) {
        throw new Error('缺少track_type参数，请提供轨道类型');
    }

    // 验证轨道类型是否有效
    const validTrackTypes = Object.values(TrackType);
    if (!validTrackTypes.includes(params.track_type as TrackType)) {
        throw new Error(`无效的轨道类型: ${params.track_type}。有效类型: ${validTrackTypes.join(', ')}`);
    }
    // 构建请求数据
    const requestData = {
        track_type: params.track_type,
        track_name: params.track_name || `${params.track_type}轨道`,
        mute: params.mute || false,
        relative_index: params.relative_index || 0,
        absolute_index: params.absolute_index,
    };
    // 发送POST请求到后端API
    return apiClient.post(`/tracks/create/${params.draft_id}/`, requestData);
}

/**
 * 删除指定草稿中的轨道
 * @param params 删除轨道的参数
 * @returns Promise<any>
 */
export function deleteTrack(params: DeleteTrackParams): Promise<any> {
    // 验证必需参数
    if (!params.draft_id) {
        throw new Error('缺少draft_id参数，请提供草稿ID');
    }

    if (!params.track_id) {
        throw new Error('缺少track_id参数，请提供轨道ID');
    }

    // 构建请求数据
    const requestData = {
        track_id: params.track_id,
    };

    // 发送DELETE请求到后端API
    return apiClient.delete(`/tracks/delete/${params.draft_id}/`, { data: requestData });
}
